در لینوکس، هر فرمان سه جریان داده (Stream) اصلی دارد:
0)1)2)با استفاده از عملگرهای انتقال (Redirection Operators) میتوانیم این جریانها را به جای صفحه کلید/نمایش، به فایلها هدایت کنیم.
> (بازنویسی خروجی)عملکرد: خروجی استاندارد (STDOUT) را به یک فایل هدایت میکند.
متن "Hello" را در فایل output.txt ذخیره میکند.
>> (افزودن به انتهای فایل)عملکرد: خروجی استاندارد را به انتهای یک فایل اضافه میکند.
متن "World" را به انتهای فایل output.txt اضافه میکند.
2> (بازنویسی خطاها)عملکرد: خطاهای استاندارد (STDERR) را به یک فایل هدایت میکند.
خطای "No such file or directory" را در فایل error.log ذخیره میکند.
2>> (افزودن خطاها)عملکرد: خطاهای استاندارد را به انتهای یک فایل اضافه میکند.
خطا را به انتهای فایل error.log اضافه میکند.
&> (همه چیز)عملکرد: هر دو جریان STDOUT و STDERR را به یک فایل هدایت میکند.
هم خروجی و هم خطا را در فایل all_output.txt ذخیره میکند.
&>> (افزودن همه چیز)عملکرد: هر دو جریان STDOUT و STDERR را به انتهای یک فایل اضافه میکند.
خروجی و خطا را به انتهای فایل all_output.txt اضافه میکند.
< (ورودی از فایل)عملکرد: ورودی استاندارد (STDIN) را از یک فایل میخواند.
محتوای فایل input.txt را به عنوان ورودی به cat میدهد.
<> (ورودی و خروجی)عملکرد: ورودی را از یک فایل میخواند و خروجی را به همان فایل هدایت میکند.
از file.txt ورودی میخواند و خروجی را به همان فایل مینویسد.
این عملگر کمتر استفاده میشود و معمولاً با دستورات خاصی کار میکند که نیاز به خواندن و نوشتن همزمان در یک فایل دارند.
| عملگر | توضیح | مثال |
|---|---|---|
> |
بازنویسی STDOUT در فایل | echo "text" > file.txt |
>> |
افزودن STDOUT به انتهای فایل | echo "text" >> file.txt |
2> |
بازنویسی STDERR در فایل | ls /fake 2> error.log |
2>> |
افزودن STDERR به انتهای فایل | ls /fake 2>> error.log |
&> |
بازنویسی STDOUT + STDERR | ls /home /fake &> all.log |
&>> |
افزودن STDOUT + STDERR | ls /home /fake &>> all.log |
< |
ورودی از فایل | cat < input.txt |
<> |
ورودی و خروجی از یک فایل | cmd <> file.txt |
توضیح: همه خروجیها (STDOUT و STDERR) را به /dev/null (سیاهچاله) میفرستد.
انتقال (Redirection) با | (پایپ) فرق دارد:
|): خروجی یک دستور را به عنوان ورودی دستور بعدی میدهد.>): خروجی را به فایل میفرستد.
ابتدا فایلهای .txt را با grep پیدا میکند، سپس خروجی را در result.txt ذخیره میکند.
> ← بازنویسی خروجی>> ← افزودن به انتهای خروجی2> ← بازنویسی خطاها2>> ← افزودن به انتهای خطاها&> ← بازنویسی خروجی و خطا&>> ← افزودن خروجی و خطا< ← ورودی از فایل<> ← ورودی و خروجی از یک فایل